package com.itheima.service.impl;

import com.itheima.dao.UserDao;
import com.itheima.service.UserService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.annotation.Resource;

/**
 * @author 张义
 * @describe:
 * @date 2021/06/19
 */
//<bean id="userService" class="com.itheima.service.impl.UserServiceImpl">
//  Service 和 Component 作用一样 , Service 指代是 Service 层
@Service("userService")
//@Scope("prototype") // 单例 或者 多例
public class UserServiceImpl implements UserService {

//    @Autowired // 按照数据类型从 Spring 容器中进行匹配的 ，
//    @Qualifier("userDao") // 按照 id 名称从 Spring 容器中进行匹配的 ， 但是  @Qualifier  必须与 @Autowired  一起使用
    @Resource(name = "userDao") // @Resource 相当于 @Qualifier 和 @Autowired
    private UserDao userDao;

    @Value("${jdbc.driver}")
    private String driver;

    public void save() {
        System.out.println(driver);
        userDao.save();
    }

    @PostConstruct
    public void init(){
        System.out.println("Service init function");
    }

    @PreDestroy
    public void destory(){
        System.out.println("Service destory function");
    }


    // 如果使用 xml 文件配置的，需要 set 方法注入， 但是通过 Autowired 可以不需要，会自动注入
/*    public void setUserDao(UserDao userDao){
        this.userDao = userDao;
    }*/

}
